from .celery import app


@app.task
def banner_update():
    # 将要导入的模块放在这里，避免可能出现的循环导入问题
    from home import serializer
    from home import models
    from django.conf import settings
    from django.core.cache import cache

    queryset_banner = models.Banner.objects.filter(is_delete=False, is_show=True)\
                          .order_by('orders')[:settings.BANNER_COUNTER]
    serializer_banner = serializer.BannerModelSerializer(instance=queryset_banner, many=True)

    for banner in serializer_banner.data:
        banner['img'] = 'http://127.0.0.1:8000' + banner['img']  # 给数据库中轮播图的img字段加上前缀，使得可访问
    cache.set('banner_list', serializer_banner.data)  # 将轮播图数据存到缓存中
    # 下面代码测试时使用，正式上线不会这么写
    import time
    time.sleep(1)  # 等待一秒后
    banner_list = cache.get('banner_list')
    print(banner_list)  # 从缓存中再将轮播图数据取出并打印在控制台
    return True  # 没有必须的返回，返回个True即可
